const express = require("express")
const router = express.Router()
const nodemailer = require("nodemailer")
const adminDB = require("../../db/admin")

// 测试添加用户消息
router.post("/addMes", async (req, res) => {
  try {
    const { userID, title, des, constType } = req.body
    const doc = await adminDB.findById(userID)
    // 添加消息条数
    switch (constType * 1) {
      // 系统消息
      case 0:
        await adminDB.findByIdAndUpdate(userID, {
          systemUnread: doc.systemUnread + 1,
        })
        break
      // 节日祝福
      case 1:
        await adminDB.findByIdAndUpdate(userID, {
          festivalUnread: doc.festivalUnread + 1,
        })
        break
      case 2:
        await adminDB.findByIdAndUpdate(userID, {
          appointmentUnread: doc.appointmentUnread + 1,
        })
        break
    }
    // 添加消息
    await adminDB.findByIdAndUpdate(userID, {
      $push: { messageList: { title, des, constType: constType * 1 } },
    })
    res.send({
      code: 0,
      mes: "消息添加成功",
    })
  } catch (error) {
    console.log(error)
    res.send({
      code: 5,
      mes: "服务器异常，请稍后再试",
    })
  }
})

// 测试添加管理员
router.post("/add", async (req, res) => {
  try {
    const { name, pass, email } = req.body
    // 查看用户名是否合法
    if (!name.trim() || name.length < 2 || name.length > 12) {
      return res.send({
        code: 2,
        mes: "用户名不合法",
      })
    }

    // 查看密码是否合法
    if (!pass.trim() || pass.length < 6 || pass.length > 12) {
      return res.send({
        code: 2,
        mes: "密码不合法",
      })
    }
    // 查看邮件
    if (!email.trim() || !email.includes("@")) {
      return res.send({
        code: 2,
        mes: "邮箱地址不合法",
      })
    }

    // 查看管理员是否存在
    const doc = await adminDB.findOne({ name })
    if (doc)
      return res.send({
        code: 2,
        mes: "该管理员已存在",
      })
    const doc1 = await adminDB.findOne({ email })
    if (doc1)
      return res.send({
        code: 2,
        mes: "改邮箱已被注册",
      })
    // 存入
    await adminDB.create({ name, pass, email })

    // 发送邮件 通知该用户
    // 发送邮件
    let transporter = nodemailer.createTransport({
      host: "smtp.qq.com",
      port: 587,
      secure: false,
      auth: {
        user: "coderhjx@foxmail.com",
        pass: "ctnmiovjbnsgdcgc",
      },
    })

    let opt = {
      from: '"新新小朋友科技有限有限公司"<coderhjx@foxmail.com>',
      to: email,
      subject: "【公益星】- 公益星管理员邀请函！", //主题
      html: `
      <h2>尊敬的${name}，你好！</h2>
      <p style="text-indent: 2em">
        新新小朋友诚邀您入住
        <a
          target="_blank"
          style="color: #f13a3a; font-weight: 800"
          href="http://localhost:8080"
          >公益星</a
        >
        公益平台，这是一个社会性公益活动平台，在这里我们可以尽最大可能去帮助他人，期待您的到来！
      </p>
      <p style="text-indent: 2em">
        您的登录账号为：<span style="color: red">${name}</span>
      </p>
      <p style="text-indent: 2em">
        您的登录密码为：<span style="color: red">${pass}</span>
      </p>
      <h4>请忽泄露给别人！</h4>
      <a href="http://localhost:8080/news">点击登录</a>

      `,
    }
    let info = await transporter.sendMail(opt)

    res.send({
      code: 0,
      mes: "管理员添加成功，已以邮件的形式通知",
      data: info,
    })
  } catch (error) {
    console.log(error)
    res.send({
      code: 5,
      mes: "服务器异常，请稍后再试",
      data: error,
    })
  }
})
module.exports = router
